package com.kitty.game.statistics.service;

import com.kitty.common.utils.SpringUtils;
import com.kitty.game.activity.message.vo.DailyStatsInfo;
import com.kitty.game.activity.service.task.ShuaDaoTaskHandler;
import com.kitty.game.role.model.Role;
import com.kitty.game.statistics.model.RoleDailyStats;
import com.kitty.game.utils.Const;
import org.springframework.stereotype.Service;

@Service
public class StatsService {
    /**
     * 今日统计获得显示内容
     */
    public DailyStatsInfo getDailyStatsInfo(Role role) {
        RoleDailyStats dailyStats = role.getDailyStats();
        DailyStatsInfo dailyStatsInfo = new DailyStatsInfo();
        dailyStatsInfo.setExp(dailyStats.getExp() > 0 ? dailyStats.getExp() : 0);
        dailyStatsInfo.setTao((int) (dailyStats.getTaoPoint() > 0 ? dailyStats.getTaoPoint() / Const.ONE_DAY_POINT : 0));
        dailyStatsInfo.setTaoPoint((int) (dailyStats.getTaoPoint() > 0 ? dailyStats.getTaoPoint() % Const.ONE_DAY_POINT : 0));
        dailyStatsInfo.setMonTao((int) (dailyStats.getMonthTaoPoint() > 0 ? dailyStats.getMonthTaoPoint() / Const.ONE_DAY_POINT : 0));
        dailyStatsInfo.setMonTaoEx((int) (dailyStats.getMonthTaoPoint() > 0 ? dailyStats.getMonthTaoPoint() % Const.ONE_DAY_POINT : 0));
        dailyStatsInfo.setPot(dailyStats.getPot() > 0 ? dailyStats.getPot() : 0);
        dailyStatsInfo.setDeath(dailyStats.getDead());
        dailyStatsInfo.setOnlineTime(SpringUtils.getRoleService().getOnlineSec(role));
        dailyStatsInfo.setShuaDaoTimes(SpringUtils.getBean(ShuaDaoTaskHandler.class).getShuaDaoTotalCount(role));
        dailyStatsInfo.setOrgIcon(role.getRoleIcon());
        dailyStatsInfo.setLevel(role.getLevel());
        dailyStatsInfo.setName(role.getName());
        dailyStatsInfo.setPartyName(role.getPartyName());

        return dailyStatsInfo;
    }

    /**
     * 每日重置
     */
    public void dailyReset(Role role) {
        role.setDailyStats(new RoleDailyStats());
        role.save();
    }

    /**
     * 更新今日统计的经验
     */
    public void updateDailyRoleExpStats(Role role, int change) {
        role.getDailyStats().setExp(role.getDailyStats().getExp() + change);
        role.save();
    }

    /**
     * 更新今日统计的道行点
     */
    public void updateDailyTaoStats(Role role, long change) {
        role.getDailyStats().setTaoPoint(role.getDailyStats().getTaoPoint() + change);
        role.save();
    }

    /**
     * 更新今日统计的月道行点
     */
    public void updateDailyMonthTaoStats(Role role, long change) {
        role.getDailyStats().setMonthTaoPoint(role.getDailyStats().getMonthTaoPoint() + change);
        role.save();
    }

    /**
     * 更新今日统计的潜能
     */
    public void updateDailyPotStats(Role role, int change) {
        role.getDailyStats().setPot(role.getDailyStats().getPot() + change);
        role.save();
    }

    /**
     * 增加死亡次数
     */
    public void addDailyDeadStats(Role role, int count) {
        role.getDailyStats().setDead(role.getDailyStats().getDead() + count);
        role.save();
    }
}
